package org.example.test.test;

/**
 * 字符串加解密
 * 对输入的字符串进行加解密，并输出。
 * <p>
 * 加密方法为：
 * <p>
 * 当内容是英文字母时则用该英文字母的后一个字母替换，同时字母变换大小写,如字母a时则替换为B；字母Z时则替换为a；
 * <p>
 * 当内容是数字时则把该数字加1，如0替换1，1替换2，9替换0；
 * <p>
 * 其他字符不做变化。
 * <p>
 * 解密方法为加密的逆过程。
 * 数据范围：输入的两个字符串长度满足
 * 1
 * ≤
 * n
 * ≤
 * 1000
 * <p>
 * 1≤n≤1000  ，保证输入的字符串都是只由大小写字母或者数字组成
 * 输入描述：
 * 第一行输入一串要加密的密码
 * 第二行输入一串加过密的密码
 * <p>
 * 输出描述：
 * 第一行输出加密后的字符
 * 第二行输出解密后的字符
 */
public class Encryption {
    public static void main(String[] args) {
        System.out.println(encryption("2OA92AptLq5G1lW8564qC4nKMjv8C\n" + "B5WWIj56vu72GzRja7j5"));

    }

    public static String encryption(String s) {
        String[] split = s.split("\n");
        String s1 = split[0];
        String s2 = split[1];
        StringBuilder returnS1 = new StringBuilder();
        for (int i = 0; i < s1.length(); i++) {
            char c = s1.charAt(i);
            if (Character.isDigit(c)) {
                int anInt = Integer.parseInt(String.valueOf(c));
                if (anInt == 9) {
                    returnS1.append(0);
                } else {
                    returnS1.append(anInt + 1);
                }
            } else {
                if ('a' <= c && c <= 'z') {
                    int big = c - 32;
                    if ("Z".equals(String.valueOf((char) big))) {
                        returnS1.append("A");
                    } else {
                        returnS1.append((char) (big + 1));
                    }
                } else {
                    int small = c + 32;
                    if ("z".equals(String.valueOf((char) small))) {
                        returnS1.append("a");
                    } else {
                        returnS1.append((char) (small + 1));
                    }
                }
            }
        }

        StringBuilder returnS2 = new StringBuilder();
        for (int i = 0; i < s2.length(); i++) {
            char c = s2.charAt(i);
            if (Character.isDigit(c)) {
                int anInt = Integer.parseInt(String.valueOf(c));
                if (anInt == 0) {
                    returnS2.append(9);
                } else {
                    returnS2.append(anInt - 1);
                }
            } else {
                if ('a' <= c && c <= 'z') {
                    int big = c - 32;
                    if ("A".equals(String.valueOf((char) big))) {
                        returnS2.append("Z");
                    } else {
                        returnS2.append((char) (big - 1));
                    }
                } else {
                    int small = c + 32;
                    if ("a".equals(String.valueOf((char) small))) {
                        returnS2.append("z");
                    } else {
                        returnS2.append((char) (small - 1));
                    }
                }
            }
        }
        return returnS1 + "\n" + returnS2;
    }
}
